"""
4. 切片的使用

题目：编写一个Python程序，随机生成20个由大小写字母、数字和下划线组成的字符组，并使用字符串、列表、集合和元组的方法打印出来。
对字符串和列表切片，用两种方式取出4-14位的字符。
提示：
    1. 使用random.randint()函数生成随机整数。
    2. 使用random.choice()函数从字符组中随机选择一个字符。
    3. 字符串切片：str[start:end]，列表切片：list[start:end]。
"""

import random

# 随机生成20个字符（请补充完整代码）


import random
import string

# 生成包含大小写字母、数字和下划线的字符组
all_characters = string.ascii_letters + string.digits + "_"

# 生成20个随机字符组
random_char_groups = []
for _ in range(20):
    random_group = ""
    for _ in range(10):  # 这里假设每个字符组长度为10，可按需调整
        random_group += random.choice(all_characters)
    random_char_groups.append(random_group)

# 使用字符串方法打印
print("字符串形式:")
for char_group in random_char_groups:
    print(char_group)

# 使用列表方法打印
print("\n列表形式:")
print(random_char_groups)

# 使用集合方法打印（注意集合会去重，顺序可能改变）
print("\n集合形式:")
print(set(random_char_groups))

# 使用元组方法打印
print("\n元组形式:")
print(tuple(random_char_groups))

# 对字符串切片，两种方式取出4-14位的字符（假设每个字符组长度足够，这里以第一个为例）
print("\n字符串切片取4-14位字符（第一种方式）:")
if random_char_groups:
    first_group = random_char_groups[0]
    print(first_group[4:14])
print("字符串切片取4-14位字符（第二种方式）:")
if random_char_groups:
    first_group = random_char_groups[0]
    print(first_group[slice(4, 14)])

# 对列表切片，两种方式取出4-14位的字符（假设每个字符组长度足够，这里以第一个为例）
print("\n列表切片取4-14位字符（第一种方式）:")
if random_char_groups:
    first_group_list = list(random_char_groups[0])
    print(first_group_list[4:14])
print("列表切片取4-14位字符（第二种方式）:")
if random_char_groups:
    first_group_list = list(random_char_groups[0])
    print(first_group_list[slice(4, 14)])